home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / dev / lang / AmigaTalk.lha / general / Integer.st < prev    next >
Text File  |  2002-03-01  |  3KB  |  144 lines

  1. Class Integer :Number
  2. [
  3.    = aNumber
  4.       ^ <primitive 6 self aNumber>
  5.          ifTrue:  [ <primitive 16 self aNumber> ]
  6.          ifFalse: [ super = aNumber ]
  7. |
  8.    > aNumber
  9.       ^ <primitive 6 self aNumber>
  10.          ifTrue:  [ <primitive 13 self aNumber> ]
  11.          ifFalse: [ super > aNumber ]
  12. |
  13.    < aNumber
  14.       ^ <primitive 6 self aNumber>
  15.          ifTrue:  [ <primitive 12 self aNumber> ]
  16.          ifFalse: [ super < aNumber ]
  17. |
  18.    + aNumber
  19.       ^ <primitive 6 self aNumber>
  20.          ifTrue:  [ <primitive 10 self aNumber> ]
  21.          ifFalse: [ super + aNumber ]
  22. |
  23.    - aNumber
  24.       ^ <primitive 6 self aNumber>
  25.          ifTrue:  [<primitive 11 self aNumber>]
  26.          ifFalse: [ super - aNumber ]
  27. |
  28.    * aNumber
  29.       ^ <primitive 6 self aNumber>
  30.          ifTrue:  [<primitive 18 self aNumber>]
  31.          ifFalse: [ super * aNumber ]
  32. |
  33.    / aNumber
  34.       ^ self asFloat / aNumber
  35. |
  36.    allMask: anInteger
  37.       ^ anInteger = <primitive 23 self anInteger>
  38. |
  39.    anyMask: anInteger
  40.       ^ 0 ~= <primitive 23 self anInteger>
  41. |
  42.    asCharacter
  43.       ^ <primitive 36 self>
  44. |
  45.    asFloat
  46.       ^ <primitive 39 self >
  47. |
  48.    asString
  49.       ^ <primitive 37 self>
  50. |
  51.    bitAnd: anInteger
  52.       ^ <primitive 23 self anInteger>
  53. |
  54.    bitAt: anInteger
  55.       ^ <primitive 21 self anInteger>
  56. |
  57.    bitInvert
  58.       ^ <primitive 33 self>
  59. |
  60.    bitOr: anInteger
  61.       ^ <primitive 22 self anInteger>
  62. |
  63.    bitShift: anInteger
  64.       ^ <primitive 25 self anInteger>
  65. |
  66.    bitXor: anInteger
  67.       ^ <primitive 24 self anInteger>
  68. |
  69.    even
  70.       ^ (self rem: 2) = 0
  71. |
  72.    factorial
  73.       ^ <primitive 38 self>
  74. |
  75.    gcd: anInteger
  76.       ^ <primitive 6 self anInteger>
  77.          ifTrue:  [<primitive 20 self anInteger>]
  78.          ifFalse: [self opError]
  79. |
  80.    highBit
  81.       ^ <primitive 34 self>
  82. |
  83.    lcm: anInteger
  84.       ^ <primitive 6 self anInteger>
  85.          ifTrue:  [self * anInteger quo: (self gcd: anInteger)]
  86.          ifFalse: [self opError]
  87. |
  88.    noMask: anInteger
  89.       ^ 0 = (self bitAnd: anInteger)
  90. |
  91.    odd
  92.       ^ (self rem: 2) ~= 0
  93. |
  94.    quo: anInteger
  95.       ^ <primitive 6 self anInteger>
  96.          ifTrue:  [<primitive 28 self anInteger>]
  97.          ifFalse: [self opError]
  98. |
  99.    // aNumber                        "see quo also"
  100.       ^ <primitive 6 self aNumber>
  101.          ifTrue:  [<primitive 19 self aNumber>]
  102.          ifFalse: [self opError]
  103. |
  104.    radix: aNumber
  105.       ^ <primitive 26 self aNumber false>
  106. |
  107.    asHex
  108.       ^ <primitive 26 self 16 true>
  109. |
  110.    asBinary
  111.       ^ <primitive 26 self 2 true>
  112. |
  113.    asOctal
  114.       ^ <primitive 26 self 8 true>
  115. |
  116.    asSignedHex
  117.       ^ <primitive 26 self 16 false>
  118. |
  119.    asSignedBinary
  120.       ^ <primitive 26 self 2 false>
  121. |
  122.    asSignedOctal
  123.       ^ <primitive 26 self 8 false>
  124. |
  125.    rem: anInteger
  126.       ^ <primitive 6 self anInteger>
  127.          ifTrue:  [<primitive 29 self anInteger>]
  128.          ifFalse: [self opError]
  129. |
  130.    intNegRem: aNumber ! i !
  131.       ^ <primitive 6 self aNumber>  "Used to be '\\', not intNegRem:"
  132.          ifTrue:  [i <- self * ( (self < 0)
  133.                                   ifTrue: [ -1 ] 
  134.                                  ifFalse: [  1 ] ).
  135.            
  136.                    i rem: aNumber]
  137.  
  138.         ifFalse:  [self opError]
  139. |
  140.    timesRepeat: aBlock ! i !
  141.       i <- 0.
  142.       [i < self] whileTrue: [aBlock value. i <- i + 1]
  143. ]
  144.